package com.ja.util;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 
    * 项目名称：cp   
    * 类名称：DateUtil.java   
    * 类描述：   日期时间工具类
    * 创建人：   GL
    * 创建时间：2018年12月13日 下午4:27:03   
 * @version v1.0.0
 */
public class DateUtil {

	/**
	 * 
	 * ----TODO: 时间格式化类
	 * 
	 */
	
	/**
	  * 方法名：getCurrTime 
	  * 描述：     获取当前时间，格式为：yyyy-MM-dd HH:mm:ss                 
	  * 参数：    @return 
	 * @return: String
	 */
	public static String getCurrTime() {
		SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return ss.format(new Date());
	}
	
	/**
	 * 方法名：getCurrTime 
	 * 描述：     获取当前时间，格式为：yyyy-MM-dd HH:mm:ss                 
	 * 参数：    @return 
	 * @return: String
	 */
	public static String getCurrTimes(long current) {
		SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return ss.format(current);
	}
	
	/**
	  * 方法名：findFormatDate 
	  * 描述：     获取当前时间，格式为：yyyy-MM-dd                  
	  * 参数：    @return 
	 * @return: String
	 */
	public static String findFormatDate() {
		return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
	}
	
	/**
	 * 方法名：findFormatDates
	 * 描述：     获取当前时间，格式为：yyyyMMdd                  
	 * 参数：    @return 
	 * @return: String
	 */
	public static String findFormatDates() {
		return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
	}
	
	/**
	 * 方法名：formatDateInNumber
	 * 描述：     获取当前时间，格式为：yyyyMMdd                  
	 * 参数：    @return 
	 * @return: String
	 */
	public static String formatDateInNumber(Date date) {
		SimpleDateFormat ss = new SimpleDateFormat("yyyyMMdd");
		return ss.format(date);
	}
	
	/**
	   *   方法名：findLatelyDate   
	   *   描述：    获取最近的时间   格式：yyyy-MM-dd                   
	   *   参数：    @param number 时间偏移量  +1 当前时间加1天      -1 当前时间减一天
	   *   参数：    @return 
	 * @return: String
	 */
	@SuppressWarnings("static-access")
	public static String findLatelyDate(int number) {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		Date date = new Date();//取时间
	    Calendar calendar = new GregorianCalendar();
	    calendar.setTime(date);
	    calendar.add(calendar.DATE,number);//把日期往后增加一天.整数往后推,负数往前移动
	    date=calendar.getTime(); //这个时间就是日期往后推一天的结果 
	    String time = formatter.format(date);
		return time;
	}
	
	/**
	 * 方法名：findFormatDateHour 
	 * 描述：    获取当前时间，格式为：HH:mm:ss                 
	 * 参数：    @return 
	 * @return: String
	 */
	public static String findFormatDateHours() {
		return LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"));
	}
	
	/**
	  * 方法名：findFormatDateHour 
	  * 描述：    获取当前时间，格式为：HH-mm-ss                 
	  * 参数：    @return 
	 * @return: String
	 */
	public static String findFormatDateHour() {
		return LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH-mm-ss"));
	}
	
	/**
	 *   方法名：DateFormatOrderNum   
	 *   描述：    生成订单号格式 yyyyMMddHHmmss                      
	 *   参数：    @return 
	 * @return: String
	 */
	public static String DateFormatOrderNum() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
		Date date = new Date();//取时间
		return formatter.format(date);
	}
	
	/**
	   *   方法名：getLast12Months   
	   *   描述：    获取最近12个月的月份                      
	   *   参数：    @param index 距最近月份的偏移量
	   *   参数：    @return 
	 * @return: String
	 */
	public static String getLast12Months(int index) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
		c.add(Calendar.MONTH, -index);
		Date m = c.getTime();
		return sdf.format(m);
	}
	
	
	
	/**
	 * 格式化日期，格式为：yyyy-MM-dd
	 * @return
	 */
	public static String formatDate(LocalDate date) {
		return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
	}
	
	/**
	 * 格式化日期，格式为：yyyyMMdd
	 * @return
	 */
	public static String formatDateInNumber(LocalDate date) {
		return date.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
	}
	
	/**
	 * 格式化时间，格式为：yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String formatDateTime(LocalDateTime time) {
		return time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
	}
		
	public static void main(String[] args) {
		String a = getLast12Months(0);
		System.out.println(a);
	}

}
